#ifndef __W25Q_STORAGE_H__
#define __W25Q_STORAGE_H__

#include <rtthread.h>
#include <rtdevice.h>
#include <stdint.h>
#include <stdio.h>
#include "w25q128.h"
#include <stdint.h>
#include <string.h>
/* 数据结构体定义 */
typedef struct {
        uint16_t year;
        uint8_t month;
        uint8_t day;
        uint8_t hour;
        uint8_t minute;
        uint8_t second;
        uint8_t temp_int;
        uint8_t temp_dec;
        uint8_t humi_percent;
        uint8_t vibration;
        uint8_t lat_int;   // 纬度整数部分（°）
        uint8_t lat_dec;   // 纬度小数部分（×100）
        uint8_t lon_int;   // 经度整数部分（°）
        uint8_t lon_dec;   // 经度小数部分（×100）
} __attribute__((packed)) THData;

/* 宏定义 */
#define MAX_SAMPLES       10
#define SAMPLE_INTERVAL   8000
#define DATA_STORAGE_ADDR 0x00000000
#define SECTOR_SIZE       4096
#define SECTOR_EMPTY      0xFF  // 擦除后的数据值（全1）

#define MAX_RECORDS 100       // 最大记录数
#define RECORD_LENGTH 50      // 每条记录最大长度
#define TOTAL_SECTORS 4096  // 假设设备共有1024个扇区
// 定义全局数据结构
extern char record_array[MAX_RECORDS][RECORD_LENGTH];  // 字符串数组存储所有记录
extern uint16_t valid_record_count;                    // 有效记录数量


/* 函数声明 */
void sync_time(int year, int month, int day, int hour, int minute, int second);
void sync_fixed_time(void);
void cmd_start_time_sync(int argc, char *argv[]);
void cmd_start_storage(int argc, char *argv[]);
void cmd_query_records(int argc, char *argv[]);
void cmd_count_empty_sectors(int argc, char *argv[]);

#endif /* __W25Q_STORAGE_H__ */
